[レポート] CON316: AWS Fargateでのコンテナワークロードの保護 #reinvent
はじめに
本記事はAWS re:Invent 2018のセッション「CON316 - [REPEAT] Securing Container Workloads on AWS Fargate」のレポートです。
AWS Fargate makes it easy to run containers without needing to provision or manage servers. But how do you secure workloads without access to the host? In this session, we explore the security controls and best practices for securing containers running on AWS Fargate. We cover networking setup, IAM, and the AWS and third-party tools you can use to deploy a secure, scalable cluster with AWS Fargate.
スピーカーはAWSのテクニカルアカウントマネージャー、Theodore Salvo。
レポート
コンテナイメージ
そのコンテナイメージを知る
誰が作ったのか?どこから来たのか?
イメージのタグ/digitsを選ぶ
Scratch imageから作る
ベースOSのみ、シンプルでセキュア
スクラッチイメージから作ってる人?→少数
スクラッチイメージであればアプリケーションとConfigに注力出来る
コンテナレジストリ
プライベートレジストリ
信頼性は自分たちで確保
DockerレジストリやECRからイメージを取得し管理
パブリックレジストリ
信頼性は無し、ただし公式リポジトリは除く
公式リポジトリが最も信頼出来る
マーケットプレイスレジストリ
信頼性はともかくverifyはされている
作成もメンテナンスもベンダーが行う
86%のイメージはUSER lineを使っておらずデフォルトでrootで動作する
ネットワークセキュリティ
VPCを変更する必要無し
ENIを通じてタスクと通信する
タスクごとにセキュリティグループが独立
タスクのネットワークはCSIプラグインを使用
ネームスペースもタスクごとに独立
認証と認可
タスクごとにロールが設定
タスクから他のAWSサービスを利用
ユーザーはIAMによってアクセスコントロール
IAMの権限に従ってクラスタやタスクを操作
タスクを実行するロール
ECS/Fargateが利用
コンテナイメージのPull/Publishを実行
機密情報の利用
環境変数の場合
暗号化無し
認証/認可無し
機密情報のローテーションは静的
Systems Manager Parameter Storeの場合
暗号化はKMSで実行
認証/認可はIAMでコントロール
機密情報のローテーションは静的
Secrets Managerの場合
暗号化はKMSで実行
認証/認可はIAMでコントロール
機密情報のローテーションを動的に行うことが出来る
Secrets Managerがオススメ
コンテナからAPIで叩いて機密情報を取得
コンテナのセキュアな再利用が簡単に可能
実行中の保護
EC2の場合
ユーザーからEC2へのアクセスをFirewall/Security groupで保護
アンチマルウェアはEC2にて実行
ECS/Fargateの場合
ユーザーからのアクセスはFirewall/Security groupで保護
セキュリティエージェントは?2つの方法がある
各コンテナにセキュリティエージェントをインストール
セキュリティエージェント専用のコンテナから他のコンテナをチェックする(Sidecar container)
Advanced features
Linuxのケーパビリティの削減/削除
OSの機能は出来るだけ削ったほうがコンテナとしてはセキュア
OSの機能の追加は出来ない
コンテナへの特権も持たせない
ネームスペース
プロセス、CPU、メモリを名前で指定
クラスタレベルで独立してネームスペースを分割
リソース制限
Elasticsearch等メモリを多く使うコンテナが他のコンテナに影響を与えないようにリミットの設定が可能
ユーザーごとに制限が可能
ソフトリミットまたはハードリミット
Read onlyコンテナ
例えばWebサーバ
コンテンツが変わったら新しいコンテナを作成
コンテナをリードオンリーとリードライトでレイヤー分割
リードオンリーなコンテナは共通化
さいごに
Fargateでのセキュリティについて分かりやすく解説してくれたセッションでした。